﻿/**
 * @file MaterialFEWapper.h
 * @brief FE材料 相关的python接口
 * @author wangning (2185896382@qq.com)
 * @date 2024-12-03
 */
#ifndef _PY_SEA_MATERIALFE___WAPPER_H___
#define _PY_SEA_MATERIALFE___WAPPER_H___

#include <QString>
#include <QObject>
#include "PythonInterfaceAPI.h"
#include "FITK_Interface/FITKInterfaceStructural/PyFITKMaterialsFE.h"

class FE : public Acoustics::PyFITKMaterialsFE
{
public:
    explicit FE(const QString& name);
    explicit FE();
    virtual ~FE() = default;
};

/**
 * @brief FE材料相关PYTHON接口装饰
 * @author wangning (2185896382@qq.com)
 * @date 2024-12-03
 */
class PythonInterfaceAPI MaterialFEWapper : public QObject
{
    Q_OBJECT

public slots:

    FE* new_FE();

    void delete_FE(FE* obj);

    /**
     * @brief 在Python解释器中通过名称获取对象
     * @author wangning (2185896382@qq.com)
     * @date 2024-12-03
     */
    FE* static_FE_GetFE(const QString& name);
    /**
     * @brief 获取名称
     * @author wangning (2185896382@qq.com)
     * @date 2024-12-03
     */
    QString getName(FE* obj);
    /**
     * @brief  设置名称
     * @author wangning (2185896382@qq.com)
     * @date   2024-12-03
     */
    void setName(FE * obj, const QString& name);
    /**
     * @brief  设置属性
     * @param[i]  type  1：各向同性杨氏模量   E
                        2：不可设置           G
                        3：各向同性泊松比     NU
                        4：密度值             RHO
                        5：各向同性膨胀系数   A
                        6：各向同性温度值     TREF
                        7：阻尼               GE
     * @param[i]  value 给定值
     * @author wangning (2185896382@qq.com)
     * @date   2024-12-03
     */
    void setField(FE* obj, int type, double value);
    /**
     * @brief  创建材料
     * @param[i]  name：材料名称
     * @author wangning (2185896382@qq.com)
     * @date   2024-12-03
     */
    void createMaterial(FE* obj, const QString& name);

private:
    void init(FE* obj);
};

#endif
